var app = getApp();
var status = require('../../utils/index.js');
var util = require('../../utils/util.js');

Component({
    externalClasses: ["i-class"],
    properties: {
        updateCart: {
            type: Number,
            value: 0,
            observer: function (val) {
                if (val > 0) {
                    this.updateCartNum();
                }
            }
        },
        likeTitle: {
            type: String,
            value: '大家常买'
        },
        controller: {
            type: 'String',
            value: 'index.load_gps_goodslist'
        },
        gid: {
            type: 'Number',
            value: 0
        }
    },

    data: {
        disabled: false,
        list: [],
        show_goods_guess_like: 1,
        _lock: false
    },

    attached: function () {
        console.log('guess like attached');
        this.setData({ _lock: true }, () => {
            this.initFn();
        })
    },

    pageLifetimes: {
        show: function () {
            this.data._lock || this.initFn();
            console.log('guess like show');
        }
    },

    methods: {
        initFn: function () {
            let that = this;
            this.setData({ list: [] }, () => {
                that.getData();
                that.updateCartNum();
            })
        },
        getData: function () {
            var token = wx.getStorageSync('token');
            var that = this;
            var cur_community = wx.getStorageSync('community');
            let { controller, gid } = this.data;
            app.util.request({
                'url': 'entry/wxapp/index',
                'data': {
                    controller,
                    token: token,
                    pageNum: 1,
                    is_random: 1,
                    head_id: cur_community.communityId || '',
                    id: gid
                },
                dataType: 'json',
                success: function (res) {
                    if (res.data.code == 0) {
                        let oldList = that.data.list;
                        let list = res.data.list || [];
                        list = oldList.concat(list);
                        let show_goods_guess_like = 1;
                        if (gid) show_goods_guess_like = res.data.show_goods_guess_like || 0;
                        that.setData({ list, show_goods_guess_like, _lock: false })
                    } else {
                        that.setData({ noMore: true, _lock: false })
                    }
                }
            })
        },
        openSku: function (e) {
            let idx = e.currentTarget.dataset.idx;
            this.setData({ disabled: false })
            let spuItem = this.data.list[idx];
            if (spuItem.skuList.length === void 0) {
                this.triggerEvent("openSku", {
                    actId: spuItem.actId,
                    skuList: spuItem.skuList,
                    promotionDTO: spuItem.promotionDTO || '',
                    allData: {
                        spuName: spuItem.spuName,
                        skuImage: spuItem.skuImage,
                        actPrice: spuItem.actPrice,
                        canBuyNum: spuItem.spuCanBuyNum,
                        stock: spuItem.spuCanBuyNum,
                        marketPrice: spuItem.marketPrice,
                        oneday_limit_count: spuItem.oneday_limit_count,
                        total_limit_count: spuItem.total_limit_count,
                        one_limit_count: spuItem.one_limit_count,
                        goods_start_count: spuItem.goods_start_count
                    }
                })
            } else {
                this.addCart({ value: 1, type: "plus", idx });
            }
        },
        changeNumber: function (t) {
            var e = t.detail;
            e && this.addCart(e);
        },
        outOfMax: function (t) {
            var e = t.detail, idx = t.idx, list = this.data.list, spuItem = list[idx], canBuyNum = spuItem.spuCanBuyNum;
            if (list[idx].car_count >= canBuyNum) {
                wx.showToast({
                    title: "不能购买更多啦",
                    icon: "none"
                })
            }
        },
        addCart: function (t) {
            var token = wx.getStorageSync('token');
            var community = wx.getStorageSync('community');
            let idx = t.idx;
            let list = this.data.list;
            let spuItem = list[idx];
            var goods_id = spuItem.actId;
            var community_id = community.communityId;
            let goods_start_count = spuItem.goods_start_count;
            let number = spuItem.car_count || 0;
            let quantity = 1;
            let that = this;

            if (t.type == 'plus') {
                if (number < goods_start_count) {
                    quantity = goods_start_count - number;
                }
                let data = {
                    goods_id,
                    community_id,
                    quantity,
                    sku_str: '',
                    buy_type: 'dan',
                    pin_id: 0,
                    is_just_addcar: 1
                }
                util.addCart(data).then(res => {
                    if (res.showVipModal == 1) {
                        let { pop_vipmember_buyimage } = res.data;
                        that.triggerEvent("vipModal", { pop_vipmember_buyimage, showVipModal: true, visible: false });
                    } else {
                        if (res.data.code == 3 || res.data.code == 7) {
                            wx.showToast({
                                title: res.data.msg,
                                icon: 'none',
                                duration: 2000
                            })
                        } else if (res.data.code == 6) {
                            let max_quantity = res.data.max_quantity || '';
                            list[idx].car_count = res.data.max_quantity || 0;
                            (max_quantity > 0) && that.setData({ list })
                            var msg = res.data.msg;
                            wx.showToast({
                                title: msg,
                                icon: 'none',
                                duration: 2000
                            })
                        } else {
                            that.triggerEvent("changeCartNum", res.data.total);
                            list[idx].car_count = res.data.cur_count || 0;
                            that.setData({ list })                       
                            wx.showToast({
                                title: "已加入购物车",
                                image: "../../images/addShopCart.png"
                            })
                            status.indexListCarCount(goods_id, res.data.cur_count);
                        }
                    }
                })
            } else {
                if (number <= goods_start_count) {
                    quantity = number;
                }
                app.util.request({
                    url: 'entry/wxapp/user',
                    data: {
                        controller: 'car.reduce_car_goods',
                        token: token,
                        goods_id: goods_id,
                        community_id: community_id,
                        quantity,
                        sku_str: '',
                        buy_type: 'dan',
                        pin_id: 0,
                        is_just_addcar: 1
                    },
                    dataType: 'json',
                    method: 'POST',
                    success: function (res) {
                        if (res.data.code == 3) {
                            wx.showToast({
                                title: res.data.msg,
                                icon: 'none',
                                duration: 2000
                            })
                        } else {
                            that.triggerEvent("changeCartNum", res.data.total);
                            list[idx].car_count = res.data.cur_count || 0;
                            that.setData({ list })
                            status.indexListCarCount(goods_id, res.data.cur_count);
                        }
                    }
                })
            }
        },
        updateCartNum: function () {
            let goodsListCarCount = app.globalData.goodsListCarCount; //[{ actId: 84, num: 2}]
            let list = this.data.list;
            if (goodsListCarCount.length > 0 && list.length > 0) {
                goodsListCarCount.forEach(function (item) {
                    let k = list.findIndex((n) => n.actId == item.actId);
                    if (k != -1 && list[k].skuList.length === 0) {
                        let newNum = item.num * 1;
                        list[k].car_count = newNum >= 0 ? newNum : 0;
                    }
                })
                this.setData({ list })
            }
        }
    }
})
